package com.xx;

import javax.management.MBeanServer;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import java.lang.management.ManagementFactory;

/**
 * JMX的使用步骤
 * 1. 定义接口与资源实体类，接口中定义属性与操作；get表示可读，set表示可写。
 * 2. 创建Agent类。
 * a. 创建MBeanServer，相当于管理MBean的容器，创建方式有两种一获取JVM中默认启动的Mbean server 或者 自己创建。
 * b. 创建ObjectName，用于标识唯一的资源MBean，格式为："域名：name=MBean名称"。
 * c. 绑定MBean与对应的ObjectName并注册到MBeanServer。
 * 至此即可通过JConsole管理本地的MBean的先关信息了，同事也可以提供其他的连接方式，如：
 * 3. rmi连接方式。
 * a. 注册监听端口号。
 * b. 创建JMXServiceURL，格式为：service:jmx:rmi://localhost:0/jndi/rmi://localhost:1099/jmxrmi（完整版）  JMXServiceURL格式说明 。
 * c. 创建jmxConnectorServer，绑定MBserver与Url。
 * 4. HtmlAdaptor连接管理方式（需要引入jmxtools.jar）。
 * a. 创建Html适配器，并设置监听端口。
 * b. 创建适配器ObjectName，绑定Html适配器并注册到MBeanServer。
 * c. 开启适配器。
 */
public class Main {
    public static void main(String[] args) throws Exception {
        // 获得 MBeanServer
        MBeanServer platformMBeanServer = ManagementFactory.getPlatformMBeanServer();

        // 创建ObjectName
        ObjectName objectName = new ObjectName("com.xx:name=Demo");

        // 创建具体逻辑处理MBean
        Demo demo = new Demo();

        // 绑定MBean与对应的ObjectName并注册到MBeanServer
        platformMBeanServer.registerMBean(demo, objectName);

        Thread.sleep(Integer.MAX_VALUE);
    }
}
